/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __3CB1DDEB_0975_4904_82C0_42F64A275C22__
#define __3CB1DDEB_0975_4904_82C0_42F64A275C22__

namespace xos_net
{
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 
    // 要求用户数据实现这个接口，以便accept新连接时，创建用户对应的连接数据
    // 
    class i_connect
    {
    protected:
        virtual ~i_connect(){}

    public:
        virtual xos_box::i_notify * connect_notify() = 0;
        virtual i_connect * create_accept_connect() = 0;
    };
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // 
    // i_net
    // 
    class i_net : public xos::i_release
    {
    protected:
        virtual ~i_net() {}

    public:
        virtual int set_heart_check_interval_ms( int n_heart_interval_ms ) = 0;
        virtual int set_callback( xos_box::i_notify * pNotify ) = 0;
        virtual xos_box::i_notify * notify() = 0;
    };

    // 
    // 模块导出函数定义
    // 
    typedef int ( * f_create )( xos_container::i_container * pContainer, i_net ** ppv );

} // xos_net

#endif // __3CB1DDEB_0975_4904_82C0_42F64A275C22__
